ExtJS এ Associations ডেটাবেসের সম্পর্ক বা রিলেশনশিপের মত কাজ করে, যা ডেটা মডেলগুলির মধ্যে সম্পর্ক তৈরি এবং পরিচালনা করতে সহায়ক। ExtJS এর মডেল সিস্টেম hasMany
এবং belongsTo
অ্যাসোসিয়েশন সমর্থন করে, যা একাধিক মডেলের মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয়। এই অ্যাসোসিয়েশনগুলি ডেটা মডেলের মধ্যে একে অপরের সাথে সম্পর্ক স্থাপন এবং সহজভাবে ডেটা পরিচালনা করার জন্য অত্যন্ত গুরুত্বপূর্ণ।
hasMany
অ্যাসোসিয়েশনhasMany
অ্যাসোসিয়েশনটি ব্যবহার করা হয় যখন একটি মডেল অন্য মডেলের একাধিক রেকর্ডের মালিক। উদাহরণস্বরূপ, একটি Customer
মডেল একাধিক Order
মডেলের মালিক হতে পারে।
hasMany
ব্যবহার উদাহরণধরা যাক, একটি Customer
মডেল এবং একটি Order
মডেল রয়েছে। একটি Customer এর একাধিক Order থাকতে পারে। তাই, Customer
মডেলটি Order
মডেলের hasMany
অ্যাসোসিয়েশন থাকবে।
Customer.js
(মডেল):
Ext.define('MyApp.model.Customer', {
extend: 'Ext.data.Model',
fields: ['id', 'name', 'email'],
hasMany: {
model: 'MyApp.model.Order', // সম্পর্কযুক্ত মডেল
name: 'orders', // অ্যাসোসিয়েশন নাম
foreignKey: 'customer_id' // আউটগোয়িং সম্পর্কের কী
}
});
Order.js
(মডেল):
Ext.define('MyApp.model.Order', {
extend: 'Ext.data.Model',
fields: ['id', 'orderDate', 'totalAmount', 'customer_id'],
belongsTo: {
model: 'MyApp.model.Customer', // সম্পর্কযুক্ত মডেল
foreignKey: 'customer_id', // ইনকামিং সম্পর্কের কী
getterName: 'getCustomer' // মডেল রিলেটেড ডেটা পাওয়ার জন্য গেটার ফাংশন
}
});
এখানে, Customer
মডেল hasMany
অ্যাসোসিয়েশন ব্যবহার করে Order
মডেলের একাধিক রেকর্ডের মালিক। অন্যদিকে, Order
মডেল belongsTo
অ্যাসোসিয়েশন ব্যবহার করে Customer
মডেলের সাথে সম্পর্ক স্থাপন করছে।
belongsTo
অ্যাসোসিয়েশনbelongsTo
অ্যাসোসিয়েশনটি ব্যবহার করা হয় যখন একটি মডেল অন্য একটি মডেলের একক রেকর্ডের সাথে সম্পর্কিত হয়। উদাহরণস্বরূপ, একটি Order
মডেল একটি নির্দিষ্ট Customer
এর সাথে সম্পর্কিত।
Order.js
(মডেল):
Ext.define('MyApp.model.Order', {
extend: 'Ext.data.Model',
fields: ['id', 'orderDate', 'totalAmount', 'customer_id'],
belongsTo: {
model: 'MyApp.model.Customer', // সম্পর্কযুক্ত মডেল
foreignKey: 'customer_id', // ইনকামিং সম্পর্কের কী
getterName: 'getCustomer' // মডেল রিলেটেড ডেটা পাওয়ার জন্য গেটার ফাংশন
}
});
এখানে, Order
মডেলটি belongsTo
অ্যাসোসিয়েশন ব্যবহার করে Customer
মডেলের সাথে সম্পর্কিত। এর মাধ্যমে একটি অর্ডারের সাথে সম্পর্কিত গ্রাহকের তথ্য সহজে পাওয়া যাবে।
আপনি যখন hasMany
বা belongsTo
অ্যাসোসিয়েশন ব্যবহার করেন, তখন মডেলের সাথে সম্পর্কিত ডেটা লোড করার জন্য আপনি association
বা proxy
ব্যবহার করতে পারেন।
hasMany
অ্যাসোসিয়েশন লোড করার উদাহরণ:var customer = Ext.create('MyApp.model.Customer', {
id: 1,
name: 'John Doe',
email: 'john.doe@example.com'
});
// অ্যাসোসিয়েশন ডেটা লোড করতে
customer.getOrders().load({
callback: function(orders, operation, success) {
if (success) {
console.log(orders); // গ্রাহকের অর্ডারের তালিকা
}
}
});
এখানে, getOrders()
হল hasMany
অ্যাসোসিয়েশন দ্বারা সম্পর্কিত Order
মডেলগুলির তালিকা ফেরত দেয়।
belongsTo
অ্যাসোসিয়েশন লোড করার উদাহরণ:var order = Ext.create('MyApp.model.Order', {
id: 1,
orderDate: '2024-12-01',
totalAmount: 250,
customer_id: 1
});
// অ্যাসোসিয়েশন ডেটা লোড করতে
order.getCustomer().load({
callback: function(customer, operation, success) {
if (success) {
console.log(customer); // অর্ডারের সাথে সম্পর্কিত গ্রাহকের তথ্য
}
}
});
এখানে, getCustomer()
হল belongsTo
অ্যাসোসিয়েশন দ্বারা সম্পর্কিত Customer
মডেলের রেকর্ড।
hasMany
অ্যাসোসিয়েশন: একটি মডেল (যেমন Customer
) একাধিক মডেল (যেমন Order
) এর মালিক হতে পারে। একাধিক সম্পর্কের ডেটা লোড করা সম্ভব।belongsTo
অ্যাসোসিয়েশন: একটি মডেল (যেমন Order
) অন্য একটি মডেল (যেমন Customer
) এর সাথে সম্পর্কিত। একক সম্পর্কের ডেটা লোড করা সম্ভব।ExtJS এর associations (hasMany, belongsTo) ব্যবহার করে আপনি সহজেই ডেটার সম্পর্ক স্থাপন এবং পরিচালনা করতে পারেন, যা বৃহত্তর অ্যাপ্লিকেশন গঠনে সাহায্য করে।